A substantial amount of technology today is implemented in software. A developer writes source code statements in a particular programming language to accomplish a desired function and stores the source code statements, sometimes referred to herein as programming statements, in a file. A compiler that understands the syntax of the particular programming language may read the file, may ensure each programming statement complies with the syntax, and may compile the source code into an object code file that contains binary instructions that are executable by a processor to implement the desired functionality. There may be thousands of different programming languages, each of which may have its own syntax, or set of rules, that define the respective language at the source code level.
Due to the importance and prevalence of software development, software development tools have become increasingly sophisticated. Much of software development today is done with the help of an integrated development environment (IDE) that helps reduce software development time by providing time-saving features for the developer. For example, an IDE may provide real-time verification that a developer's programming statements comply with the syntax of the respective programming language, and provide auto-completion as the IDE recognizes programming constructs, to name just a few advantages of an IDE.
There are different types of programming languages. Traditionally, programming languages were procedural. Examples of procedural type programming languages are Fortran, Cobol and Pascal. Over time there has been a paradigm shift to object-oriented (OO) programming. Examples of OO type programming languages are Java, C++ and C#. An OO program will usually contain different types of objects, each type corresponding to a particular kind of complex data to be managed or to a real-world object or concept such as a bank account, a hockey player, or a bulldozer. Modern OO programming languages in many ways offer a substantial advancement in programming flexibility, efficiency, supportability and the like. Accordingly, OO programming languages are extremely popular and may now constitute the vast majority of new software projects.
Consequently, software developers increasingly may be taught OO programming techniques only, and may be unfamiliar with the programming paradigm associated with conventional procedural programming languages. However, from a practical standpoint, thousands or millions of programs that have been written using procedural programming languages continue not only to operate, but operate well, and there is little motivation to rewrite such software using an OO programming language. Yet, as companies hire new software developers out of college, increasing numbers of such developers may be unfamiliar with procedural programming languages, making it difficult for such developers to enhance or even maintain such programs.
Furthermore, many programming languages are highly function specific, with compilers and languages created to focus on a particular problem, and they accomplish that function very well. Even the general advantages brought by newer OO programming languages, may not compensate for the ease with which a special-purpose programming language can accomplish a particular task. However, it would be beneficial to such procedural programming languages if they could leverage the advantages of modern OO programming languages. Accordingly, there is a need to integrate programming languages of different types, such as a special-purpose procedural programming language with an OO programming language, to enable the best of both programming languages to be leveraged in the development of programs.